/**
 * 
 */
package front;


import java.io.IOException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.model.SelectItem;

import org.apache.myfaces.shared_tomahawk.util.MessageUtils;

import servidores.Libro;

public class ServidorFront {

	private Servicio servicio;
	private List<Libro> listaLibros;
	private String tema;
	private String titulo;
	private List<SelectItem> listaTemas;
	
	public ServidorFront () throws UnknownHostException, IOException {
		try {
		    servicio = Servicio.getInstance();
		    listaTemas = new ArrayList<SelectItem>();
			listaTemas = buildSelectList(servicio.getListaTemas());
		} catch (IOException e) {
			MessageUtils.addMessage(FacesMessage.SEVERITY_FATAL,"Error en la conexion al servidor",null);
		} catch (ClassNotFoundException e) {
			MessageUtils.addMessage(FacesMessage.SEVERITY_FATAL,"Error al traer los datos",null);
		} 
		
		System.out.println("CONSTRUCTOR = " + Servicio.getTs());
		listaLibros = new ArrayList<Libro>();
		Libro libro = new Libro();
		libro.setCosto(1);
		libro.setId_libro(1);
	//	libro.setSeleccionado(true);
		libro.setStock(1);
		libro.setTema("cualuqiera");
		libro.setTitulo("cualuqiera");
		listaLibros.add(libro);
	}

	public String getTema() {
		return tema;
	}

	public void setTema(String tema) {
		this.tema = tema;
	}

	public List<Libro> getListaLibros() {
		return listaLibros;
	}

	public void setListaLibros(List<Libro> listaLibros) {
		this.listaLibros = listaLibros;
	}

	public List<SelectItem> getListaTemas() {
		return listaTemas;
	}

	public void setListaTemas(List<SelectItem> listaTemas) {
		this.listaTemas = listaTemas;
	}
	
	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}
	
	private List<SelectItem> buildSelectList(List<String> lista) {
		List<SelectItem> listaSI = new ArrayList<SelectItem>();
		for(String tema : lista) {
			listaSI.add(new SelectItem(tema,tema));
		}
		if (!listaSI.isEmpty()) listaSI.add(0,new SelectItem("",""));
		return listaSI;
		
	}

	public String buscar() {

		if (servicio == null) {
			try {
			    servicio = Servicio.getInstance();
			} catch (IOException e) {
				MessageUtils.addMessage(FacesMessage.SEVERITY_FATAL, "No hay conexion con el host", null);
				return "failure";
			}
		}
		Servicio.setTs(Integer.parseInt(titulo));
		if ("".equalsIgnoreCase(titulo.trim()) && "".equalsIgnoreCase(tema)) {
			MessageUtils.addMessage(FacesMessage.SEVERITY_FATAL, "Completar un campo", null);
			return "Failure";
		}
		try {
			if (!"".equalsIgnoreCase(titulo.trim()) && !"".equalsIgnoreCase(tema)) {
				listaLibros = servicio.buscarPorTituloTema();
				return "Success";
			}
			if ("".equalsIgnoreCase(titulo.trim())) listaLibros = servicio.buscarPorTema();
			else listaLibros = servicio.buscarPorTitulo();
			return "Success";
		} catch (IOException e) {
			MessageUtils.addMessage(FacesMessage.SEVERITY_FATAL,"Error en la conexion al servidor",null);
		} catch (ClassNotFoundException e) {
			MessageUtils.addMessage(FacesMessage.SEVERITY_FATAL,"Error al traer los datos",null);
		}
			return "Success";
	}
	
	public void comprar() {
		System.out.println("Comprando CARAJO");
	}

}
